package com.gutai.admin.common.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 
 * 
 * 
 * <pre>
 * HISTORY
 * ****************************************************************************
 *  ID    DATE            PERSON            REASON
 *  1     2019年1月29日         la.01367604           Create
 * ****************************************************************************
 * </pre>
 * 
 * @author la.01367604
 * @version 1.0
 */
@Deprecated
public class LocalCacheUtil {

    /** 本地缓存基础数据的集合：
     * 1)key为类全名，value为对应数据集合 
     * 2)key为类全名$id，value为分类后数据集合
    */
    private static Map<String, Object> cache;

    public static void init() {
        if (cache == null || cache.isEmpty()) {
            cache = new HashMap<>();
        }
    }

    public static <T> void addOrUpd(String key, List<T> value) {
        init();
        cache.put(key, value);
    }

    public static <T> void addOrUpd(String key, Set<T> value) {
        init();
        if (cache.containsKey(key)) {
            Set<T> datas = (Set<T>) cache.get(key);
            datas.addAll(value);
        } else {
            cache.put(key, value);
        }
    }

    public static <T> void add(String key, T value) {
        init();
        List<T> datas = null;
        if (cache.containsKey(key)) {
            datas = (List<T>) cache.get(key);
        } else {
            datas = new ArrayList<>();
            cache.put(key, datas);
        }
        datas.add(value);
    }

    public static <T> void delete(String key, T value) {
        init();
        if (cache.containsKey(key)) {
            List<T> datas = (List<T>) cache.get(key);
            datas.remove(value);
        }
    }

    public static Object getElems(String key) {
        init();
        return cache.get(key);
    }
}
